import torch
from torch import tensor

tensor = torch.arange(12).reshape( 3, 4)
#unsqueeze 方法会在张量的指定位置添加维度，即在指定位置上增加一个大小为 1 的新维度。
#squeeze 方法用于移除张量中大小为 1 的维度，降低张量的维度。
#在第一个维度增加一个大小为1的维度
print(tensor)
unsqueeze_result = tensor.unsqueeze(0)
print("00",unsqueeze_result.shape)  # 输出：(1, 3, 4)
print(unsqueeze_result)
# 在维度1上添加一个新维度
unsqueeze_result = tensor.unsqueeze(1)
print("01",unsqueeze_result.shape)  # 输出：(3, 1, 4)
print(unsqueeze_result)
# 在倒数第一个上添加一个新维度
unsqueeze_result = tensor.unsqueeze(-1)
print("02",unsqueeze_result.shape)  # 输出：(3, 4, 1)
print(unsqueeze_result)
# 在倒数第二个维度上添加一个新维度
unsqueeze_result = tensor.unsqueeze(-2)
print("03",unsqueeze_result.shape)  # 输出：(3, 1, 4)
print(unsqueeze_result)
# squeeze 示例
tensor_with_one_dim = torch.arange(12).reshape(1,3, 1,4)  # 创建一个带有大小为1维度的张量
# 移除所有大小为1的维度
squeeze_result = tensor_with_one_dim.squeeze()
print("04",squeeze_result.shape)  # 输出：(3, 4)
print(squeeze_result)
# 只移除维度0上的大小为1的维度
squeeze_result = tensor_with_one_dim.squeeze(0)
print("05",squeeze_result.shape)  # 输出：(3, 1, 4)
print(squeeze_result.shape)